package com.ruoyi.blog.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.model.blog.Blog;
import com.ruoyi.model.blog.dto.BlogDto;
import com.ruoyi.model.blog.vo.BlogAndCommonVo;
import com.ruoyi.model.blog.vo.UserAndBlogVO;

import java.util.List;
import java.util.Map;

public interface BlogService extends IService<Blog> {
    /**
     * 修改文章
     *
     * @param blogDTO 文章DTO
     * @return 结果
     */
    public int updateBlog(BlogDto blogDTO);

    /**
     * 推送文章
     *
     * @param blogDto 文章
     * @return 结果
     */
    boolean pushBlog(BlogDto blogDto);

    /**
     * 返回活动详情和对应的评论列表
     *
     * @param blogId 文章
     * @param type   类型
     * @return ActivityAndCommon
     */
    BlogAndCommonVo getBlogAndCommonVo(String blogId, String type);

    /**
     * 审核文章状态
     *
     * @param blogId 文章ID
     * @param status 状态
     * @return 结果
     */
    boolean checkBlogStatus(String blogId, String status);


    /**
     * 根据推送ID查询索引博客列表。
     *
     * @param pushId 推送ID，用于查询与之相关的博客列表。
     * @return 返回一个博客列表，这些博客的状态为正常（status为"0"）且未被删除（is_del为"0"）。
     */
    public List<Blog> selectBlogByPushId(String pushId);

    /**
     * 查询文章
     *
     * @param id 文章主键
     * @return 文章
     */
    public UserAndBlogVO selectWebBlogById(String id);


    /**
     * 查询通文章列表
     *
     * @param blog 文章
     * @return 文章集合
     */
    public List<Blog> selectWebBlogList(Blog blog);

    /**
     * 批量删除文章
     *
     * @param ids 需要删除的文章主键集合
     * @return 结果
     */
    public boolean deleteWebBlogByIds(String[] ids);

    /**
     * 删除文章信息
     *
     * @param id 文章主键
     * @return 结果
     */
    public boolean deleteWebBlogById(String id);


    /**
     * 1. 查询首页最热门的8条文章
     * 2. 查询所有文章数量
     *
     * @return Map<String, Object>
     */
    List<Blog> queryIndexBlogMap();
}
